Don't convert function pointers to void * and back.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 2 Jul 2013 03:41:16 +0000 (20:41 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 2 Jul 2013 03:41:16 +0000 (20:41 -0700)
commit5dd72d1a507c98f5354787205326d18ade9dfe10
tree302a4d5f088d0bd1b0f81a4c77386a37871ca37f
parentc6459cd6e556f3b15f51824aa3f68889fbc5abe9
Don't convert function pointers to void * and back.

It isn't portable C, and it's easy enough to avoid.
* alloc.c: Verify SAVE_FUNCPOINTER bits, too.
(make_save_value): Add support for SAVE_FUNCPOINTER.
* keymap.c (map_keymap_char_table_item, map_keymap_internal):
* print.c (print_object):
Distinguish function from object pointers.
* lisp.h (SAVE_FUNCPOINTER): New constant.
(SAVE_SLOT_BITS): Adjust to it.
(SAVE_TYPE_FUNCPTR_PTR_OBJ): New constant, replacing
SAVE_TYPE_PTR_PTR_OBJ.  Change the only use.
(voidfuncptr): New typedef.
(struct Lisp_Save_Value): New member data[0].funcpointer.
(XSAVE_FUNCPOINTER): New function.
src/ChangeLog
src/alloc.c
src/keymap.c
src/lisp.h
src/print.c